package haut.system.member.person;

import haut.system.member.events.SportingEvents;
import haut.util.exception.DataException;
import haut.util.exception.DuplicationException;
import java.util.Vector;

/** 师生类。
 * 这是系统登入界面的选项之一，
 * 相当于一个游客，
 * 拥有基础权限。
 * @author  MingJie Li
 * @author Jun Zhu
 *  */
public class TeaAndStu extends AbstractPerson {

    /**
     * <code>TeaAnsStu</code>类的有参构造函数。
     * @param id 学/工号
     * @param name 姓名
     * @throws DataException
     */
    Vector<SportingEvents> myEvents = new Vector<SportingEvents>();//师生的报名项目
    public TeaAndStu(String id, String name) throws DataException {
        super(id, name);
    }

    /**
     * 参加某个项目
     * @param id 项目编号
     * @throws DuplicationException
     */
    Vector<SportingEvents> allEvents = data.getAllEvents();//获取当前系统数据中的所有项目
    public void participate(String id) throws DuplicationException{
        /*
         * throws DuplicationException
         *先看有没有这个项目，
         *有就能报名，但要避免重复报名。
         *报上了看看ta是不是运动员，如果不是就加入。
         */
        int len = allEvents.size();
        SportingEvents event = null;
        int flag = 0;
        for(int i=0;i<len;++i) {
            event = allEvents.get(i);
            if(event.getId().equals(id)) {
                flag = 1;
                System.out.println("编号为:"+event.getId()+"的项目"+event.getName()+"存在");
                this.myEvents.add(event);//个人报名项目
                if(this.isPlayer()) {//判断该对象是否是运动员
                    System.out.println(this.id+" "+this.name+"是运动员");
                }
                else {//非运动员
                    data.addAllPlayer((Player) this);
                }
            }
        }
        if(flag == 0) {
            System.out.println("编号为:"+id+"的项目不存在");
        }

    }

    /**
     * 成为某个项目的裁判员
     * @param id 项目编号
     * @throws DuplicationException
     */
    public void becomeJudge(String id) throws DuplicationException {
        int len = allEvents.size();
        SportingEvents event = null;
        for(int i=0;i<len;++i) {
            event = allEvents.get(i);//遍历所有的已有项目
            if(event.getId().equals(id)) {
                if(!event.hasJudge()) {//该项目无裁判
                    event.setJudge((Judge) this);//将此对象设为编号为id项目的裁判
                }
            }
        }
    }

    /**
     * 成为某个项目的志愿者
     * @param id 项目编号
     * @throws DuplicationException
     */
    public void becomeVolunteer(String id) throws DuplicationException {
        int len = allEvents.size();
        SportingEvents event = null;
        for(int i=0;i<len;++i) {
            event = allEvents.get(i);
            if(event.getId().equals(id));{
                if(!this.isVolunteer()) {//此对象不是志愿者
                    data.addAllVolunteer((Volunteer) this);//将该对象，加入到志愿者协会中
                }
            }
        }
    }

}
